package com.agri.dto;

import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;

/**
 * 融资产品数据传输对象
 * 用于前端与后端之间的融资产品数据交互
 *
 * @author Agri-Fin-Sale Team
 * @since 2025-10-31
 */
@Data
public class FinancingProductDTO {
    /**
     * 产品ID，更新时必填
     */
    private Long id;

    /**
     * 产品编码，唯一标识
     */
    @NotBlank(message = "产品编码不能为空")
    @Size(max = 50, message = "产品编码长度不能超过50个字符")
    private String productCode;

    /**
     * 产品名称
     */
    @NotBlank(message = "产品名称不能为空")
    @Size(max = 100, message = "产品名称长度不能超过100个字符")
    private String productName;

    /**
     * 产品类型：1-信用贷，2-抵押贷，3-担保贷
     */
    @NotNull(message = "产品类型不能为空")
    private Integer productType;

    /**
     * 利率
     */
    @NotNull(message = "利率不能为空")
    private BigDecimal interestRate;

    /**
     * 最低贷款金额
     */
    @NotNull(message = "最低贷款金额不能为空")
    private BigDecimal minAmount;

    /**
     * 最高贷款金额
     */
    @NotNull(message = "最高贷款金额不能为空")
    private BigDecimal maxAmount;

    /**
     * 贷款期限范围
     */
    @NotBlank(message = "贷款期限范围不能为空")
    @Size(max = 100, message = "贷款期限范围长度不能超过100个字符")
    private String termRange;

    /**
     * 适用农产品类型（分类编码，逗号分隔）
     */
    @Size(max = 500, message = "适用农产品类型长度不能超过500个字符")
    private String applicableCrops;

    /**
     * 产品描述
     */
    @Size(max = 1000, message = "产品描述长度不能超过1000个字符")
    private String description;

    /**
     * 申请条件
     */
    @Size(max = 1000, message = "申请条件长度不能超过1000个字符")
    private String requirements;

    /**
     * 申请流程
     */
    @Size(max = 1000, message = "申请流程长度不能超过1000个字符")
    private String applicationProcess;

    /**
     * 状态：0-下架，1-上架
     */
    private Integer status;
}